home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
c
/
AmiVoGL_MDEV.lha
/
examples
/
lcube.c.bak
< prev
next >
Wrap
Text File
|
1997-11-05
|
4KB
|
199 lines
#include <stdio.h>
#ifdef SGI
#include "gl.h"
#include "device.h"
#include "hershey.h"
#else
#include "vogl.h"
#include "vodevice.h"
#endif
/* ---------------------------------------------------------------------
* Definitions:
*/
#define CUBE_SIZE 200.0
#define TRANS 25.0
#define SCAL 0.1
/* ---------------------------------------------------------------------
* Prototypes:
*/
int main(void); /* lcube.c */
int makecubes(int); /* lcube.c */
/* ---------------------------------------------------------------------
* Source Code:
*/
int main(void)
{
char *p;
float tdir = TRANS;
float scal = 1.0 + SCAL;
int but, nplanes;
int x, y, i, n;
short val;
int kivon=-1;
prefsize(300L, 300L);
winopen("lcube");
unqdevice(INPUTCHANGE);
qdevice(SKEY);
qdevice(XKEY);
qdevice(YKEY);
qdevice(ZKEY);
qdevice(EQUALKEY);
qdevice(MINUSKEY);
qdevice(ESCKEY);
qdevice(QKEY);
window(-300.0, 300.0, -300.0, 300.0, -300.0, 300.0);
lookat(0.0, 0.0, 1500.0, 0.0, 0.0, 0.0, 0);
if ((nplanes = getplanes()) == 1)
makecubes(0);
makecubes(1);
backface(1);
doublebuffer();
gconfig();
/*
* Doublebuffer does a backbuffer(TRUE)....
*/
while(1) {
x = 500 - (int)getvaluator(MOUSEX);
y = 500 - (int)getvaluator(MOUSEY);
x *= 3;
y *= 3;
pushmatrix();
rotate(x, 'y');
rotate(y, 'x');
color(BLACK);
clear();
callobj(3);
if (nplanes == 1)
callobj(2);
popmatrix();
swapbuffers();
if (qtest()) {
but = qread(&val);
but = qread(&val); /* swallow up event */
switch (but) {
case SKEY:
scale(scal, scal, scal);
break;
case XKEY:
translate(tdir, 0.0, 0.0);
break;
case YKEY:
translate(0.0, tdir, 0.0);
break;
case ZKEY:
translate(0.0, 0.0, tdir);
break;
case MINUSKEY:
tdir = -tdir;
if (scal < 1.0)
scal = 1.0 + SCAL;
else
scal = 1.0 - SCAL;
break;
case EQUALKEY:
tdir = TRANS;
break;
case ESCKEY:
case QKEY:
gexit();
exit(0);
default:
;
}
}
}
}
void makecubes(int fill)
{
makeobj((fill + 2));
if (!fill)
color(BLACK);
pushmatrix();
translate(0.0, 0.0, CUBE_SIZE);
if (fill) {
color(RED);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
pushmatrix();
translate(CUBE_SIZE, 0.0, 0.0);
rotate(900, 'y');
if (fill) {
color(GREEN);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
pushmatrix();
translate(0.0, 0.0, -CUBE_SIZE);
rotate(1800, 'y');
if (fill) {
color(BLUE);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
pushmatrix();
translate(-CUBE_SIZE, 0.0, 0.0);
rotate(-900, 'y');
if (fill) {
color(CYAN);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
pushmatrix();
translate(0.0, CUBE_SIZE, 0.0);
rotate(-900, 'x');
if (fill) {
color(MAGENTA);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
pushmatrix();
translate(0.0, -CUBE_SIZE, 0.0);
rotate(900, 'x');
if (fill) {
color(YELLOW);
rectf(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
} else
rect(-CUBE_SIZE, -CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
popmatrix();
closeobj();
}